﻿using System;
using System.Collections;

namespace UniSender
{
    public enum ContactType
    {
        Email = Native.ContactType.email,
        Phone = Native.ContactType.phone
    }

    public enum ContactStatus
    {
        New                 = Native.ContactStatus.@new,
        Invited             = Native.ContactStatus.invited,
        Active              = Native.ContactStatus.active,
        Inactive            = Native.ContactStatus.inactive,
        Unsubscribed        = Native.ContactStatus.unsubscribed,
        Blocked             = Native.ContactStatus.blocked,
        ActivationRequested = Native.ContactStatus.activation_requested
    }

    public enum ContactAvailability
    {
        Available       = Native.ContactAvailability.available,
        Unreachable     = Native.ContactAvailability.unreachable,
        TempUnreachable = Native.ContactAvailability.temp_unreachable,
        MailboxFull     = Native.ContactAvailability.mailbox_full,
        SpamRejected    = Native.ContactAvailability.spam_rejected,
        SpamFolder      = Native.ContactAvailability.spam_folder
    }

    public enum CampaingStatus
    {
        WaitsCensor   = Native.CampaingStatus.waits_censor,
        CensorHold    = Native.CampaingStatus.censor_hold,
        Declined      = Native.CampaingStatus.declined,
        WaitsSchedule = Native.CampaingStatus.waits_schedule,
        Scheduled     = Native.CampaingStatus.scheduled,
        InProgress    = Native.CampaingStatus.in_progress,
        Analysed      = Native.CampaingStatus.analysed,
        Completed     = Native.CampaingStatus.completed,
        Stopped       = Native.CampaingStatus.stopped,
        Canceled      = Native.CampaingStatus.canceled
    }

    public enum WrapType
    {
        Skip   = Native.WrapType.skip,
        Right  = Native.WrapType.right,
        Left   = Native.WrapType.left,
        Center = Native.WrapType.center
    }

    public enum ImagesAs
    {
        Attachments = Native.ImagesAs.attachments,
        Links       = Native.ImagesAs.only_links,
        UserDefault = Native.ImagesAs.user_default
    }

    public enum EmailError
    {
        RetryLater                = Native.EmailError.retry_later,
        AttachmentIsNotBytestring = Native.EmailError.attachment_is_not_bytestring,
        AttachmentQuotaError      = Native.EmailError.attachment_quota_error,
        EmptyBody                 = Native.EmailError.body_empty,
        BodyExceedsLength         = Native.EmailError.body_exceeds_length,
        EmptySubject              = Native.EmailError.empty_subject,
        SubjectExceedsLength      = Native.EmailError.subject_exceeds_length,
        WrongHeaderParameter      = Native.EmailError.wrong_header_parameter,
        HeaderNotAllowed          = Native.EmailError.header_not_allowed,
        InvalidEmail              = Native.EmailError.invalid_email,
        EmptySenderName           = Native.EmailError.empty_sender_name,
        InvalidSenderEmail        = Native.EmailError.invalid_sender_email,
        UncheckedSenderEmail      = Native.EmailError.unchecked_sender_email,
        UnsupportedLang           = Native.EmailError.unsupported_lang,
        UnsubscribeLinkMissing    = Native.EmailError.unsubscribe_link_missing
    }


    public enum MessageStatus
    {
        NotSent                  = Native.MessageStatus.not_sent,
        Sent                     = Native.MessageStatus.ok_sent,
        Delivered                = Native.MessageStatus.ok_delivered,
        Read                     = Native.MessageStatus.ok_read,
        DeliveredToSpamFolder    = Native.MessageStatus.ok_spam_folder,
        LinkVisited              = Native.MessageStatus.ok_link_visited,
        DeliveredAndUnsubscribed = Native.MessageStatus.ok_unsubscribed,
        UserUnknown              = Native.MessageStatus.err_user_unknown,
        UserInactive             = Native.MessageStatus.err_user_inactive,
        MailboxFull              = Native.MessageStatus.err_mailbox_full,
        SpamRejected             = Native.MessageStatus.err_spam_rejected,
        SpamFolder               = Native.MessageStatus.err_spam_folder,
        DeliveryFailed           = Native.MessageStatus.err_delivery_failed,
        WillRetry                = Native.MessageStatus.err_will_retry,
        Resend                   = Native.MessageStatus.err_resend,
        DomainInactive           = Native.MessageStatus.err_domain_inactive,
        SkipLetter               = Native.MessageStatus.err_skip_letter,
        SpamSkipped              = Native.MessageStatus.err_spam_skipped,
        SpamRetry                = Native.MessageStatus.err_spam_retry,
        Unsubscribed             = Native.MessageStatus.err_unsubscribed,
        SourceInvalid            = Native.MessageStatus.err_src_invalid,
        DestinationInvalid       = Native.MessageStatus.err_dest_invalid,
        NotAllowed               = Native.MessageStatus.err_not_allowed,
        NotAvailable             = Native.MessageStatus.err_not_available,
        Lost                     = Native.MessageStatus.err_lost,
        Internal                 = Native.MessageStatus.err_internal
    }

    public enum FieldType
    {
        String  = Native.FieldType.@string,
        Text    = Native.FieldType.text,
        Number  = Native.FieldType.number,
        Boolean = Native.FieldType.@bool
    }

    public enum Currency
    {
        RUB,
        USD,
        EUR,
        UAH,
        KZT
    }

    public enum EmailPriority
    {
        Normal,
        Urgent,
        NonUrgent
    }
}
